﻿Public Class CLT0
    Inherits Base

#Region " Variables Privadas "
    Private m_RUT As String
    Private m_Nombre As String
    Private m_Color As String
    Private m_Respuesta As String
    Private m_dtSegurosCliente As DataTable
#End Region

#Region " Propiedades "
    Public Property RUT() As String
        Set(ByVal value As String)
            m_RUT = value
        End Set
        Get
            Return m_RUT
        End Get
    End Property

    Public ReadOnly Property Nombre() As String
        Get
            If m_Nombre = "" Then
                m_Nombre = m_Respuesta.Substring(11, 50).Replace("/", " ").Trim()
            End If

            Return m_Nombre
        End Get
    End Property

    Public ReadOnly Property Color() As String
        Get
            If m_Color = "" Then
                m_Color = Mid(m_Respuesta, 187, 1).Trim()
            End If

            Return m_Color
        End Get
    End Property

    Public Property dtSegurosCliente() As DataTable
        Get
            If m_dtSegurosCliente Is Nothing Then
                m_dtSegurosCliente = New DataTable()

                m_dtSegurosCliente.Columns.Add("CodigoProducto")
                m_dtSegurosCliente.Columns.Add("LlaveProducto")
            End If

            Return m_dtSegurosCliente
        End Get
        Set(ByVal value As DataTable)
            m_dtSegurosCliente = value
        End Set
    End Property
#End Region

#Region " Métodos "
    Public Sub ObtenerDatosCliente()
        L001(m_RUT)
    End Sub

    Public Function ObtenerDatosCliente(ByRef RUTCliente As String) As Boolean
        m_RUT = RUTCliente

        Return L001(m_RUT)
    End Function

    Public Function ObtenerProductosCliente(ByVal RUTCliente As String) As DataTable
        m_RUT = RUTCliente

        L063(m_RUT, "SCS", 0)

        Return dtSegurosCliente
    End Function

    Private Function L063(ByRef RUT As String, ByVal Inicio As Integer) As Boolean
        Return L063(RUT, "", Inicio)
    End Function

    Private Function L063(ByRef RUT As String, ByVal CodigoProducto As String, ByVal Inicio As Integer) As Boolean
        Dim MiSRM As SRM = New SRM()
        Dim MiRespuesta As Boolean
        Dim Continua As Boolean
        Dim Registros As Integer

        MiSRM.Nodo = Nodo
        MiSRM.Aplicacion = Aplicacion
        MiSRM.Mensaje = RUTUsuario & "L063V" & Right("0000" & Inicio, 4) & Right("000000000" & m_RUT, 9) & CodigoProducto
        'MiSRM.Mensaje = "12345678L063V0000" & RUT

        MiSRM.Invocar()

        If MiSRM.RetornoAplicacion <> 0 Then
            m_Respuesta = ""
            MiRespuesta = False
        Else
            m_Respuesta = MiSRM.Respuesta
            MiRespuesta = True
        End If

        If MiRespuesta Then
            Continua = IIf(m_Respuesta.Substring(2, 1) = "S", True, False)

            Dim MisRegistros As String = m_Respuesta.Remove(0, 16)

            MiSRM = Nothing

            Dim I As Integer

            Registros = m_Respuesta.Substring(3, 4)
            Dim IniRegistro As Integer = 0

            For I = 1 To Registros
                Dim MiRegistro As String = MisRegistros.Substring(IniRegistro, 25)

                Dim drSeguro As DataRow = dtSegurosCliente.NewRow

                drSeguro("CodigoProducto") = MiRegistro.Substring(0, 3)
                drSeguro("LlaveProducto") = IIf(MiRegistro.Substring(3, 22).Trim = "", Nothing, MiRegistro.Substring(3, 22).Trim)

                dtSegurosCliente.Rows.Add(drSeguro)
                IniRegistro = IniRegistro + 25
            Next

            If Continua Then
                MiRespuesta = L063(RUT, CodigoProducto, m_Respuesta.Substring(4, 4) + 1)
            End If
        End If

        Return MiRespuesta
    End Function

    Private Function L001(ByRef RUT As String) As Boolean
        Dim MiSRM As SRM = New SRM()
        Dim MiRespuesta As Boolean

        MiSRM.Nodo = Nodo
        MiSRM.Aplicacion = Aplicacion
        MiSRM.Mensaje = RUTUsuario & "L001L" & Right("000000000" & m_RUT, 9)
        'MiSRM.Mensaje = "12345678L001L" & RUT

        MiSRM.Invocar()

        If MiSRM.RetornoAplicacion = 0 Then
            If MiSRM.Respuesta.Length >= 240 Then
                m_Respuesta = MiSRM.Respuesta.Substring(2, 240)
            End If
        Else
            m_Respuesta = ""
        End If

        If MiSRM.RetornoAplicacion = 0 Then
            MiRespuesta = True
        Else
            MiRespuesta = False
        End If

        MiSRM = Nothing

        Return MiRespuesta
    End Function
#End Region

#Region " Constructor(es) "
    Public Sub New(ByVal MiNodo As String)
        MyBase.New(MiNodo, "CLT0")
    End Sub
#End Region

End Class
